package cho114366.basic;

import java.util.ArrayList;
import java.util.Iterator;

import cho11436_Model.SungjukVO;

public class J22_Collection {

	public static void main(String[] args) {
		// 컬렉션 프레임워크 다루기
		// ArrayList - 가변크기를 지원하는 배열
		// ArrayList 선언
		ArrayList sjdata = new ArrayList();
		// JDK1.5 이전 방식으로 코드 작성
		// ArrayList에 데이터 추가 (add(내용))
		sjdata.add(123);
		sjdata.add('가');
		sjdata.add(987.54);
		sjdata.add("sss");

		// ArrayList 특정위치에 데이터추가 (add(위치,내용))
		sjdata.add(2, new SungjukVO());// toString을 불러온다.
		// sjdata.add(10,new SungjukVO()); //오류!!! Index: 10, Size: 5
		// sjdata에는 총 5개의 데이터가 저장중
		// 따라서 , 10번깨 위치에 데이터 추가는 불가

		// ArrayList상의 데이터 알아내기(get(위치)) 위치는 배열이기때문 0부터 시작

		System.out.println(sjdata.get(0));
		System.out.println(sjdata.get(2));
		// System.out.println(sjdata.get(10));// 오류 ! /존재하지 않는 위치의 데이터 호출
		// ArrayList에 저장된 데이터 갯수 알아내기(size())
		System.out.println(sjdata.size());

		// ArrayList에 저장된 데이터 제거(remove(위치))
		System.out.println(sjdata.get(3));
		sjdata.remove(3);
		System.out.println(sjdata.get(3)); // 3번째 데이터 지웟더니 뒤에 데이터 앞으로 옴

		// ArrayList에 저장된 데이터 수정(set(위치))
		System.out.println("현재 3번 내용: " + sjdata.get(3));
		sjdata.set(3, "abc");
		System.out.println("변견된 3번 내용:" + sjdata.get(3));

		// ArrayList의 데이터 찾기(contains(값)) // 존재여부만 확인할 때 //true false
		System.out.println(sjdata.contains(123));
		System.out.println(sjdata.contains('가'));
		System.out.println(sjdata.contains("sss"));
		System.out.println(sjdata.contains(987.54));

		// Arraylist의 데이터 찾기(indexOf(값)) // 데이터 배열저장 위치 확인 // -1 0 1 2 3
		System.out.println(sjdata.indexOf(123));
		System.out.println(sjdata.indexOf('가'));
		System.out.println(sjdata.indexOf("abc"));
		System.out.println(sjdata.indexOf("sss"));

		// Array 데이터 모두제거(clear())
		sjdata.clear();

		// Arraylist의 데이터 찾기(isEmpty(값))
		System.out.println(sjdata.isEmpty()); // 비어 있으면 true , 아니면 false

		/*-----------------------------------------------------------------------*/
		// ArrayList 상의 모든 데이터 출력(1)
		sjdata.add("태희");
		sjdata.add("지현");
		sjdata.add("수지");
		sjdata.add("서진");
		sjdata.add("지연");

		for (int i = 0; i < sjdata.size(); ++i) {
			System.out.print(sjdata.get(i));
		}
		System.out.println("\n");
		// ArrayList 상의 모든 데이터 출력(2)
		// Interator 인터페이스를 이용하면 //for문은 돌릴회수를 알아야하고 생각할게 많지만 대신해서 Interator를
		// 사용한다.
		// 편리하게 collection 의 요소들을 처리할 수있음
		Iterator iter = sjdata.iterator();
		while (iter.hasNext()) {
			System.out.print(iter.next());

		}

	}

}
